package central;

import java.util.Random;
import Conexion.*;
import GUI.Ventana;
import control_monitor.Monitor;


public class Generador_piezas_distribuido extends Thread{	
	Ventana gui;
	Monitor monit;
	ComunicacionArduino robot1, robot2, robot3;
	
	int demora;
	int variacion;
	/*
	 * La demora representa a la pausa maxima entre la llegada de una nueva pieza y otra, la variacion
	 * reprensenta el tiempo que se le puede restar a la demora maxima, el tiempo que se adelante va a ser entre
	 * [0 y variacion], variando aleatoriamente.
	 */
public Generador_piezas_distribuido(Monitor _monit, Ventana _gui, int _demora, int _variacion, 
		ComunicacionArduino _robot1, ComunicacionArduino _robot2, ComunicacionArduino _robot3)
{
	 monit = _monit;
	 gui = _gui;
	 demora = _demora;
	 variacion = _variacion;
	 robot1 = _robot1;
	 robot2 = _robot2;
	 robot3 = _robot3;
}

public void Generarpieza_A(){
	Thread pieza=new Thread(new pieza_A(monit, robot1, robot2, robot3, gui));
	pieza.start();
}

public void Generarpieza_A2(){
	Thread pieza2=new Thread(new pieza_A2(monit, robot1, robot2, robot3, gui));
	pieza2.start();
}

public void Generarpieza_B(){
	Thread piezab=new Thread(new pieza_B(monit,robot2, gui));
	piezab.start();
}

public void Generarpieza_C(){
	Thread piezac=new Thread(new pieza_C(monit,robot1, robot2, robot3, gui));
	piezac.start();
}

public void run()
{
	
	while(true)
	{
		
		int priori = new Random().nextInt(100);
		if(priori < 33){
			if(priori < 16){
				Generarpieza_A();
			}
			else
			{
				Generarpieza_A2();
			}
		}
		else if( priori >= 33 && priori < 66)
		{
			Generarpieza_B();
		}
		else{
			Generarpieza_C();
		}
		
		
		//Generarpieza_B();
	
		
		try {
			double random = new Random().nextDouble();
			//System.err.println((int)(variacion * random));
			Thread.sleep(demora - (int)(variacion * random));
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


}
